/*
 * ITeacherNameList.h
 *
 *  Created on: 10 May 2010
 *      Author: Savramis Sartios
 */

#ifndef ITEACHERNAMELIST_H_
#define ITEACHERNAMELIST_H_
#include <map>
#include <string>
using namespace std;
#include "../Iterator/ITeacherNameIterator.h"
class ITeacherNameList{
public :
	/**
	 * Επιστρέφει έναν Iterator για το αντικείμενο που έχει τον κωδικό του καθηγητή και το όνομά του
	 * \return  ITeacherNameListIterator
	 */
	virtual ITeacherNameIterator *	getIterator()=0;

	/**
	 * Επιστρέφει το πλήθος των καθηγητών που έχουν αποθηκευτεί μέσα στο αντικείμενο
	 * \retutn int τον αριθμό των καθηγητών
	 */
	virtual int count()const=0;

	/**
	 * Επιστρέφει το όνομα του καθηγητή στον οποίο ανήκει ο κωδικός. Το όνομα αποθηκεύεται σε μορφή "Επώνυμο Ον."
	 * \param teacherCode ο κωδικός του καθηγητή
	 * \return string το όνομα του καθηγητή
	 */
	virtual string getTeacherName(const string *teacherCode)=0;

	/**
	 * Πρόσθετει στο αντικείμενο ένα καθηγητή με κωδικό καθηγητή teacherCode κι όνομα teacherName
	 * \param teacherCode ο κωδικός του καθηγητή
	 * \param teacherName το όνομα του καθηγητή
	 * \return true εάν αποθηκεύτηκε σωστά
	 */
	virtual bool add(const string *teacherCode,const string * teacherName)=0;

	/**
	* Επιστρέφει την αρχή της δομής
	* \return iterator
	*/
	virtual map<string,string>::iterator getStart()=0;
};

#endif /* ITEACHERNAMELIST_H_ */
